Gitを使った分散開発管理13 – gitignoreで無視するファイルを指定する

Gitを使った分散開発管理13 – gitignoreで無視するファイルを指定する

Clock Icon2011.10.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

.gitignore

.gitignoreファイルは、Gitに無視させるファイルを指定できる設定ファイルのことです。 Git管理下にあるディレクトリで、管理しても意味がないキャッシュファイル等を、add/commitの対象から無視するなどの用途で使用します。 今回は新しくリポジトリを作成して、確認してみましょう。

リポジトリを作成して試す

まず、新しくディレクリを作成します。

%mkdir mygit
%cd mygit/                                                                  

その中に.gitignoreという名前でファイルを作成します。

%vi .gitignore

中身はこのようになっています。

# logファイルは無視だが、「access.log」だけは例外にする
*.log
!access.log
 
# buildディレクトリ以下は無視
build/

#からはじまる行はコメントです。ワイルドカード指定でlogファイルを無視していますが、access.logだけは例外としています。 また、buildディレクトリ以下のファイルはすべて無視するようにしています。 ではリポジトリを初期化しましょう。

%git init                                                              
Initialized empty Git repository in /Users/user/mygit/.git/

そして、mygitディレクトリ以下に

  • access.log
  • hello.html
  • test.log
  • build/test.js

を作成しましょう。作成が終わったら、git statusでリポジトリの状態を確認してみます。

%git status                                                             
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	.gitignore
#	access.log
#	hello.html
nothing added to commit but untracked files present (use "git add" to track)

access.logとhello.html(あとは.gitignore自身) だけがadd対象になっており、設定が効いているのがわかります。

グローバルな.gitignore設定

さっきはリポジトリに対して.gitignoreを作成しました。しかし、すべてのリポジトリで適用したい設定もあると思います。 そんな場合は、git configコマンドを使用して、グローバルなgitignoreファイルを指定します。 ここでは、ホーム直下にある.gitignoreを設定します。

% git config --global --add core.excludesfile "$HOME/.gitignore"

そして、~/.gitignoreを編集します。その後新しくリポジトリを作成すると、リポジトリ配下に.gitignoreを作成しなくても ~/.gitignoreの設定が効いているのがわかります。

まとめ

今回は.gitignoreファイルを使用して、無視するファイルを指定するための方法をご紹介しました。 1つ注意点として、ファイルをコミットしたあとに.gitignoreを設定しても、一度管理下におかれたファイルが自動で無視されることはありません。 コミット後にgitignoreに追加した場合、git rmなどでリポジトリから除外するようにしてください。

また、githubのgitignore *1には、さまざまな言語やツール、ソフトウェアで使用できる.gitignoreの設定がまとめられています。 これをベースに設定すれば、最初から作成するより簡単に設定できると思います。活用してみてください。

参考サイトなど

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.